
    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>你怎么去优化代码 - 学习卡片</title>
      <style>
        body { font-family: sans-serif; background-color: #f0f8ff; color: #333; display: flex; flex-direction: column; align-items: center; padding: 50px 20px; }
        .header h1 { font-size: 32px; }
        .grid-container { display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; width: 100%; max-width: 1200px; }
        .card-container { perspective: 1200px; cursor: pointer; height: 250px; }
        .card { width: 100%; height: 100%; position: relative; transform-style: preserve-3d; transition: transform 0.7s; border-radius: 16px; box-shadow: 0 4px 16px rgba(0,0,0,0.08); }
        .card-container.flipped .card { transform: rotateY(180deg); }
        .card-face { position: absolute; width: 100%; height: 100%; backface-visibility: hidden; display: flex; flex-direction: column; box-sizing: border-box; border-radius: 16px; background-color: #fff; padding: 24px; }
        .card-back { background-color: #f0fff4; transform: rotateY(180deg); justify-content: space-between; }
        .card-category { font-size: 14px; color: #0052d9; margin-bottom: 8px; font-weight: 500; }
        .card-question { font-size: 20px; font-weight: 500; flex-grow: 1; display: flex; align-items: center; justify-content: center; text-align: center; }
        .card-answer-wrapper { flex-grow: 1; overflow-y: auto; }
        .card-answer { font-size: 15px; line-height: 1.7; }
        .card-footer { font-size: 13px; color: #8a919f; border-top: 1px solid #f0f0f0; padding-top: 16px; margin-top: 16px; }
        .card-source { font-size: 13px; color: #8a919f; border-top: 1px solid #f0f0f0; padding-top: 12px; margin-top: 12px; }
      </style>
    </head>
    <body>
      <div class="header">
        <h1>你怎么去优化代码 - 学习卡片</h1>
      </div>
      <div class="grid-container">
        
    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">理论</div>
          <div class="card-question">除了提升代码运行速度，代码优化还涵盖了哪些主要目标？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">理论</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">代码优化不仅追求运行速度提升，还涵盖了多个目标，主要包括：性能提升（减少执行时间、提高响应速度）、资源利用率（内存优化、CPU利用率）、可维护性（提高代码可读性、降低维护成本）和可扩展性（支持横向和纵向扩展）。</div>
          </div>
          <div class="card-source">来源: 理解代码优化的目标</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">原则</div>
          <div class="card-question">SOLID原则中的“开闭原则”（OCP）指的是什么？可以通过哪些方式实现？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">原则</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">开闭原则（OCP）指的是软件实体（如类、模块、函数）应该对扩展开放，对修改关闭。文档中提到，可以通过使用接口和抽象类来定义行为，以及通过依赖注入（DI）来动态替换依赖等方式来实现。</div>
          </div>
          <div class="card-source">来源: 代码优化的原则 - 4. SOLID原则 - 开闭原则（OCP）</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">技术</div>
          <div class="card-question">在性能优化中，如何利用并行和并发处理来提升程序效率？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">技术</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">可以通过多线程和多进程充分利用多核CPU资源，例如在I/O密集型任务中使用多线程，在CPU密集型任务中使用多进程。此外，还可以通过异步编程（如异步I/O）避免阻塞主线程，提高系统的响应速度和资源利用率。</div>
          </div>
          <div class="card-source">来源: 性能优化 - 2. 并行和并发处理</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">机制</div>
          <div class="card-question">什么是“对象池”技术？它在内存优化中有什么作用？文档中列举了哪些例子？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">机制</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">对象池技术是一种通过重用已分配的对象来减少频繁创建和销毁的技术。它的主要作用是提高系统性能和降低内存消耗。文档中列举了数据库连接池和线程池作为例子。</div>
          </div>
          <div class="card-source">来源: 内存优化 - 2. 对象重用和池化</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">特性</div>
          <div class="card-question">Java的G1垃圾收集器（G1 GC）主要适用于哪些应用场景？其优势是什么？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">特性</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">G1垃圾收集器（G1 GC）适用于大内存和低延迟应用。它的优势在于通过分区管理和并行回收，能够提高垃圾收集的效率和可预测性。</div>
          </div>
          <div class="card-source">来源: 内存优化 - 4. 垃圾收集优化 - 垃圾收集器选择</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">理论</div>
          <div class="card-question">文档中提到了哪五种常见的I/O模型？其中哪一种特别适用于高并发场景？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">理论</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">文档中提到的五种I/O模型是：阻塞I/O、非阻塞I/O、I/O多路复用、信号驱动I/O和异步I/O。其中，I/O多路复用（通过select、poll、epoll等系统调用）特别适用于高并发场景。</div>
          </div>
          <div class="card-source">来源: I/O优化 - 1. I/O操作的基础 - I/O模型</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">技术</div>
          <div class="card-question">什么是“覆盖索引”？它为什么能显著提高数据库查询性能？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">技术</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">“覆盖索引”是指索引包含了所有查询所需要的字段。它能显著提高查询性能的原因是，查询时数据库只需访问索引而无需回表访问数据行，从而减少了I/O操作。</div>
          </div>
          <div class="card-source">来源: 数据库优化 - 1. 索引优化 - 索引设计</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">模式</div>
          <div class="card-question">数据库架构优化中的“读写分离”是如何实现的？其主要目的是什么？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">模式</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">“读写分离”通常通过主从复制机制来实现，即将数据库分为主库和从库。主库负责写操作，从库负责读操作。其主要目的是提高系统的并发处理能力和读性能。</div>
          </div>
          <div class="card-source">来源: 数据库优化 - 4. 数据库架构优化 - 读写分离</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">原则</div>
          <div class="card-question">在模块化设计中，“高内聚低耦合”原则的具体含义是什么？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">原则</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">“高内聚”指模块内部的各个功能应紧密相关，以增强模块的独立性和代码重用性。“低耦合”指模块之间的依赖关系应尽量减少和松散，以便更容易进行维护和扩展，例如可以通过接口和抽象类来解耦模块间的依赖。</div>
          </div>
          <div class="card-source">来源: 代码结构优化 - 1. 模块化设计 - 高内聚低耦合</div>
        </div>
      </div>
    </div>

      </div>
    </body>
    </html>
